package com.administrator.scoreManageSys.service.impl;

import com.administrator.scoreManageSys.mapper.course.CourseMapper;
import com.administrator.scoreManageSys.service.CourseService;
import com.administrator.scoreManageSys.utils.ResultUtils;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

/**
 * @author zsh
 * @date 2022/03/16/ 11:36
 */
@Service
public class CourseServiceImpl implements CourseService {
    @Resource
    private CourseMapper courseMapper;

    @Resource
    private ResultUtils resultUtils;

    /**
     * 获取考季列表
     *
     * @return 考季列表
     */
    @Override
    public JSONObject seasonList(int pageNum, int pageSize, String name) {
        PageHelper.startPage(pageNum, pageSize);
        List<Map<String, Object>> list = courseMapper.seasonList(name);
        PageInfo<Map<String, Object>> pageInfo = new PageInfo<>(list);
        return resultUtils.resultSuccessData(pageInfo);
    }

    /**
     * 添加考季
     *
     * @param userId 操作用户
     * @param name   考季名称
     * @return 操作结果
     */
    @Override
    public JSONObject seasonAdd(Long userId, String name) {
        //创建时间
        long timeMillis = System.currentTimeMillis();
        courseMapper.seasonAdd(name, timeMillis, userId);
        return resultUtils.resultSuccess();
    }

    /**
     * 根据id删除考季
     *
     * @param id 考季id
     * @return 删除结果
     */
    @Override
    public JSONObject seasonDelete(Long id) {
        courseMapper.seasonDelete(id);
        return resultUtils.resultSuccess();
    }

    /**
     * 根据id修改考季名称
     *
     * @param id   考季id
     * @param name 考季名称
     * @return 操作结果
     */
    @Override
    public JSONObject seasonUpdate(Long id, String name) {
        courseMapper.seasonUpdate(id, name);
        return resultUtils.resultSuccess();
    }

    /**
     * 获取科目列表
     *
     * @return 科目列表
     * @param pageNum 当前页
     * @param pageSize 页大小
     * @param name 科目名称
     */
    @Override
    public JSONObject subjectList(Integer pageNum, Integer pageSize, String name) {
        PageHelper.startPage(pageNum, pageSize);
        List<Map<String, Object>> list = courseMapper.subjectList(name);
        PageInfo<Map<String, Object>> pageInfo = new PageInfo<>(list);
        return resultUtils.resultSuccessData(pageInfo);
    }

    /**
     * 添加科目
     *
     * @param userId 操作用户id
     * @param name   新添科目名称
     * @return 操作结果
     */
    @Override
    public JSONObject subjectAdd(Long userId, String name) {
        //创建时间
        long timeMillis = System.currentTimeMillis();
        courseMapper.subjectAdd(userId, name, timeMillis);

        return resultUtils.resultSuccess();
    }

    /**
     * 根据id删除科目
     *
     * @param id 科目id
     * @return 操作结果
     */
    @Override
    public JSONObject subjectDelete(Long id) {
        courseMapper.subjectDelete(id);
        return resultUtils.resultSuccess();
    }

    /**
     * 修改科目
     *
     * @param name   科目名称
     * @param id     科目id
     * @return 操作结果
     */
    @Override
    public JSONObject subjectUpdate(String name, Long id) {
        courseMapper.subjectUpdate(id, name);
        return resultUtils.resultSuccess();
    }

    /**
     * 获取课程列表
     *
     * @param pageNum  当前页
     * @param pageSize 页大小
     * @param subject 科目id

     * @param name 授课姓名
     * @return 课程列表
     */
    @Override
    public JSONObject courseList(Integer pageNum, Integer pageSize, Integer subject, String name) {
        PageHelper.startPage(pageNum, pageSize);
        List<Map<String, Object>> list = courseMapper.courseList(subject,name);
        PageInfo<Map<String, Object>> pageInfo = new PageInfo<>(list);
        return resultUtils.resultSuccessData(pageInfo);
    }

    /**
     * 添加课程
     *
     * @param userId  添加人id
     * @param name    课程名清楚
     * @param subject 科目id
     * @return 操作结果
     */
    @Override
    public JSONObject courseAdd(Long userId, String name, Long subject) {
        //创建时间
        long timeMillis = System.currentTimeMillis();
        courseMapper.courseAdd(name,subject,userId,timeMillis);
        return resultUtils.resultSuccess();
    }

    /**
     * 删除课程
     *
     * @param id 删除的课程名称
     * @return 操作结果
     */
    @Override
    public JSONObject courseDeletion(Long id) {
        courseMapper.courseDeletion(id);
        return resultUtils.resultSuccess();
    }

    /**
     * 修改课程
     *
     * @param name    课程名称
     * @param subject 课程所属的科目id
     * @param id      课程id
     * @return 操作结果
     */
    @Override
    public JSONObject courseUpdate(String name, Long subject, Long id) {
        courseMapper.courseUpdate(id, name, subject);
        return resultUtils.resultSuccess();
    }


}
